import md5 from './md5.min.js';
import store from "../store/index.js"
/**
 * 数字格式化
 */
const formatNumber = n => {
	n = n.toString();
	return n[1] ? n : '0' + n;
}
/**
 * MD5加密
 */
const MD5 = str => md5(str);
/**
 * 手机拨打号码
 */
const dialPhone = (phoneNumber) => {
	uni.makePhoneCall({
		phoneNumber,
		fail() {
			uni.showToast({
				title: '拨打号码异常',
				icon: "none"
			})
		}
	})
}
// 复制
const copy=(val)=>{
	uni.setClipboardData({
		data:val,
		success() {
			uni.showToast({
				title: '复制成功',
				icon:"none"
			})
		},
		fail() {
			uni.showToast({
				title: '复制失败',
				icon:"none"
			})
		}
		
	})
}
/**
 * 手机发送短信
 */
const smsPhone = (phoneNumber) => {
	let msg = plus.messaging.createMessage(plus.messaging.TYPE_SMS);
	msg.to = [phoneNumber];
	msg.body = '';
	plus.messaging.sendMessage(msg);
}
/**
 * 处理业务员树分类
 * 参数1：模式	（0-树结构	1-正常结构)
 * 参数2：数据数组
 */
const handleSalerTree = (mode, list) => {
	let groupList = [],
		salerList = [];
	if (mode == 0) {
		for (let i = 0; i < list.length; i++) {
			// if(list[i].)
		}
	} else if (mode == 1) {
		for (let i = 0; i < list.length; i++) {
			if (!!list[i].match(/^(.*?)-(.*?)$/) || list[i] == "_NULL_") {
				groupList.push(list[i])
			} else {
				salerList.push(list[i])
			}
		}
	}
	return {
		groupList,
		salerList
	}
}
/**
 * 表单简单校验
 */
const checkFormInput = (id, str) => {
	if (id == "text") {
		return str == "" ? false : true
	} else if (id == "phone") {
		let re = /^1\d{10}$/;
		let result = str.match(re);
		if (result == null) return false;
		return true;
	} else if (id == "email") {
		var reg = /^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/;
		if (reg.test(str)) {
			return true;
		} else {
			return false;
		}
	} else if (id == 'card') {
		return this.validateIdCard(str);
	}
}
/**
 * 校验身份证
 */
const validateIdCard = (idCard) => {
	//15位和18位身份证号码的正则表达式
	var regIdCard =
		/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
	//如果通过该验证，说明身份证格式正确，但准确性还需计算
	if (regIdCard.test(idCard)) {
		if (idCard.length == 18) {
			var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //将前17位加权因子保存在数组里
			var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2); //这是除以11后，可能产生的11位余数、验证码，也保存成数组
			var idCardWiSum = 0; //用来保存前17位各自乖以加权因子后的总和
			for (var i = 0; i < 17; i++) {
				idCardWiSum += idCard.substring(i, i + 1) * idCardWi[i];
			}
			var idCardMod = idCardWiSum % 11; //计算出校验码所在数组的位置
			var idCardLast = idCard.substring(17); //得到最后一位身份证号码
			//如果等于2，则说明校验码是10，身份证号码最后一位应该是X
			if (idCardMod == 2) {
				if (idCardLast == "X" || idCardLast == "x") {
					return true;
					//alert("恭喜通过验证啦！");
				} else {
					return false;
					//alert("身份证号码错误！");
				}
			} else {
				//用计算出的验证码与最后一位身份证号码匹配，如果一致，说明通过，否则是无效的身份证号码
				if (idCardLast == idCardY[idCardMod]) {
					//alert("恭喜通过验证啦！");
					return true;
				} else {
					return false;
					//alert("身份证号码错误！");
				}
			}
		}
	} else {
		//alert("身份证格式不正确!");
		return false;
	}
}
/**
 * 通过时间戳获取日期时间
 * @param 时间戳
 * @param 是否返回时间  
 */
const getTimeBytimeStamp=(str,flag=true)=>{
	let date=new Date(str);
	let newStr;
	if(flag){
		newStr=date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+' '+date.getHours()+':'+date.getMinutes()+':'+date.getSeconds();
	}else{
		newStr=date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();
	}
	return newStr;
}
/**
 * 获取当前纯时间
 */
const getCleanTimeCur=()=>{
	let dateObj=new Date(new Date().getTime());
	let year=dateObj.getFullYear().toString();
	let month=formatNumber(dateObj.getMonth()+1).toString();
	let date=formatNumber(dateObj.getDate()).toString();
	let hour=formatNumber(dateObj.getHours()).toString();
	let min=formatNumber(dateObj.getMinutes()).toString();
	let sec=formatNumber(dateObj.getSeconds()).toString();
	let mill=formatNumber(dateObj.getMilliseconds()).toString();
	return 	year+month+date+hour+min+sec+mill;
}
/**
 * 检查权限
 * @param 路由路径
 * @param 功能ID
 * @param 是否部件  
 */
const checkPower=(route,id)=>{
	let flag=false;
	try{
		let {Menu,Widget}=store.state.power;
		if(id==undefined){
			for(let i=0;i<Menu[0].SubMenus.length;i++){
				if(route==Menu[0].SubMenus[i].Id){
					flag=true;
					break;
				}
			}
		}else{
			if(Widget[route]==undefined){
				flag=false;
			}else{
				for(let i=0;i<Widget[route].length;i++){
					if(Widget[route][i].Id==id){
						flag=true;
						break;
					}
				}
			}
		}
	}catch(e){
		flag=false;
	}
	
	return flag;
}
/**
 * toast框
 */
const toast=(title,icon='none')=>{
	uni.showToast({
		title,
		icon
	})
}
module.exports = {
	formatNumber,
	MD5,
	copy,
	dialPhone,
	smsPhone,
	handleSalerTree,
	checkFormInput,
	getTimeBytimeStamp,
	checkPower,
	toast,
	getCleanTimeCur
}

